package org.jeecg.modules.common.api;

import org.jeecg.common.system.vo.SysUserCacheInfo;
import org.jeecg.modules.common.baseentity.BaseApiEntity;
import javax.servlet.http.HttpServletRequest;
import java.util.Map;

public interface ISysInfo {
    /**
     * 从 token 获取用户信息，组织信息
     *
     * @param token，必填
     * @param tenantId
     * @param schoolYearId
     * @param semesterId
     * @return
     */
    BaseApiEntity getBaseApiEntityByToken(String token,String tenantId,String schoolYearId,String semesterId);
    /**
     * 从request获取 token 用户信息，组织信息
     *
     * @param req
     * @return
     */
    BaseApiEntity getBaseApiEntity(HttpServletRequest req);
    /**
     * 克隆对象属性并获得系统参数，从request获取 token 用户信息，组织信息,默认含有用户基础信息
     *
     * @param req
     * @param achAchievementSubjProjItemDemo
     * @return
     */
    BaseApiEntity querySysInfoCloneObj(HttpServletRequest req, Object achAchievementSubjProjItemDemo);
    /**
     * 克隆对象属性并获得系统参数，从request获取 token 用户信息，组织信息,默认不含有用户基础信息
     *
     * @param req
     * @param achAchievementSubjProjItemDemo
     * @return
     */
    BaseApiEntity querySysInfoCloneObj(HttpServletRequest req, Object achAchievementSubjProjItemDemo,boolean objIncludeUserInfo ) ;
    /**
     * 查询系统参数
     * @param userInfo
     * @return BaseApiEntity
     */
    BaseApiEntity querySysInfoByUser(SysUserCacheInfo userInfo);
    /**
     * （通常是用vo接收参数）组装查询参数，组装vo以外的其他参数，一般不用
     * @param req
     * @return
     */
    Map<String,String> getMapQueryParamByReq(HttpServletRequest req);
}
